package com.example.utils.util;

import org.apache.commons.lang3.StringUtils;

import java.text.NumberFormat;
import java.util.List;

/**
 *  TODO  金钱额度一些转换的util
 *
 * @Author 江
 * @Date 2021/9/27 下午 17:42
 */
public class VelocityUtils {
	private static final String UNIT = "万仟佰拾亿仟佰拾万千佰拾圆角分";
	private static final String DIGIT = "零壹贰叁肆伍陆柒捌玖";
	private static final double MAX_VALUE = 9999999999999.99D;

	/**
	 *  TODO  阿拉伯数字的金额转换为大写金钱   15875624  -->  壹仟伍佰捌拾柒万伍千陆佰贰拾肆圆整
	 * @Param : value  需要转换的数字
	 * @return String  转换后的中文大写
	 * @Author 江
	 * @Date 2021/9/27 下午 17:44
	 */
	public static String changeNumberChinese(String value) {
		if(StringUtils.isBlank(value)){
			return "零圆整";
		}
		double v = Double.parseDouble(value);
		if (v < 0 || v > MAX_VALUE) {
			return "参数非法!";
		}
		long l = Math.round(v * 100);
		if (l == 0) {
			return "零圆整";
		}
		String strValue = l + "";
		// i用来控制数
		int i = 0;
		// j用来控制单位
		int j = UNIT.length() - strValue.length();
		String rs = "";
		boolean isZero = false;
		for (; i < strValue.length(); i++, j++) {
			char ch = strValue.charAt(i);
			if (ch == '0') {
				isZero = true;
				if (UNIT.charAt(j) == '亿' || UNIT.charAt(j) == '万'
						|| UNIT.charAt(j) == '圆') {
					rs = rs + UNIT.charAt(j);
					isZero = false;
				}
			} else {
				if (isZero) {
					rs = rs + "零";
					isZero = false;
				}
				rs = rs + DIGIT.charAt(ch - '0') + UNIT.charAt(j);
			}
		}
		if (!rs.endsWith("分")) {
			rs = rs + "整";
		}
		rs = rs.replaceAll("亿万", "亿");
		return rs;
	}

	/**
	 *  TODO   数字变为格式化   15800075624 -->  15,800,075,624
	 * @Param : value  需要转换的数字
	 * @return String  转换后的格式
	 * @Author 江
	 * @Date 2021/9/27 下午 17:46
	 */
	public static String getNumberMoneySep(String value) {
		if(StringUtils.isBlank(value)){
			return "0.00";
		}
		NumberFormat numberFormat = NumberFormat.getNumberInstance();
		numberFormat.setMaximumFractionDigits(2);
		return numberFormat.format(Double.parseDouble(value));
	}

	/**
	 *  TODO  List类型转为String    [aa, bb, cc] -->  aa,bb,cc
	 * @Param : value
	 * @return String
	 * @Author 江
	 * @Date 2021/9/27 下午 17:50
	 */
	public static String listToString(List<String> value) {
		if(value==null || value.size()==0){
			return "";
		}
		String result = "";
		for(String temp:value){
			result += temp+",";
		}
		if(result.length()>0){
			return result.substring(0,result.length()-1);
		}
		return result;
	}

	/**
	 *  TODO  根据传参脱敏数据   15875624  -->  158...
	 * @Param : text
	 * @Param : length
	 * @return String
	 * @Author 江
	 * @Date 2021/9/27 下午 17:54
	 */
	public static String ellipsis(String text, Integer length) {
		if(text==null || text.equals("")){
			return "";
		}
		if(text.length()>length){
			return text.substring(0, length)+"...";
		}
		return text;
	}


	public static void main(String[] args) {

		String a = "15875624";
		System.out.println(ellipsis(a,3));


	}


}
